﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using RapChieuPhim.DTO;
using System.Collections;
using RapChieuPhim.BUS;

namespace RapChieuPhim.DAO
{
    class TheThanhVienDAO
    {
        public TheThanhVienDTO GetByID(string id)
        {
            DataProvider cn = new DataProvider();
            SqlParameter param = new SqlParameter("@MaThe", id);
            DataTable dt = cn.SqlExcuteQuery("LayTheThanhVienTheoID", param);
            TheThanhVienDTO TheThanhVien = new TheThanhVienDTO();

            if (dt.Rows.Count != 0)
            {
                TheThanhVien.MaThe = dt.Rows[0]["MaThe"].ToString();
                TheThanhVien.HoTen = dt.Rows[0]["HoTen"].ToString();
                TheThanhVien.CMND = dt.Rows[0]["CMND"].ToString();
                TheThanhVien.NgaySinh = DateTime.Parse(dt.Rows[0]["NgaySinh"].ToString());
                TheThanhVien.GioiTinh = Boolean.Parse(dt.Rows[0]["GioiTinh"].ToString());
                TheThanhVien.DienThoai = dt.Rows[0]["DienThoai"].ToString();
                TheThanhVien.DoiTuong = DoiTuongBUS.GetByID(int.Parse(dt.Rows[0]["MaDoiTuong"].ToString()));
            }
            return TheThanhVien;
        }

        public IList GetAll()
        {
            DataProvider cn = new DataProvider();
            ArrayList array = new ArrayList();
            DataTable dt = cn.SqlExcuteQuery("LayAllTheThanhVien");

            if (dt.Rows.Count != 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    TheThanhVienDTO TheThanhVien = new TheThanhVienDTO();
                    TheThanhVien.MaThe = dr["MaThe"].ToString();
                    TheThanhVien.HoTen = dr["HoTen"].ToString();
                    TheThanhVien.CMND = dr["CMND"].ToString();
                    TheThanhVien.NgaySinh = DateTime.Parse(dr["NgaySinh"].ToString());
                    TheThanhVien.GioiTinh = Boolean.Parse(dr["GioiTinh"].ToString());
                    TheThanhVien.DienThoai = dr["DienThoai"].ToString();
                    TheThanhVien.DoiTuong = DoiTuongBUS.GetByID(int.Parse(dr["MaDoiTuong"].ToString()));
                    array.Add(TheThanhVien);
                }
            }
            return array;
        }

        public void Insert(TheThanhVienDTO TheThanhVien)
        {
            DataProvider cn = new DataProvider();
            SqlParameter[] param = new SqlParameter[7];
            param[0] = new SqlParameter("@MaThe", TheThanhVien.MaThe);
            param[1] = new SqlParameter("@HoTen", TheThanhVien.HoTen);
            param[2] = new SqlParameter("@CMND", TheThanhVien.CMND);
            param[3] = new SqlParameter("@NgaySinh", TheThanhVien.NgaySinh);
            param[4] = new SqlParameter("@GioiTinh", TheThanhVien.GioiTinh);
            param[5] = new SqlParameter("@DienThoai", TheThanhVien.DienThoai);
            param[6] = new SqlParameter("@MaDoiTuong", TheThanhVien.DoiTuong);
            cn.SqlExcuteNonQuery("InsertTheThanhVien", param);
        }

        public void Update(TheThanhVienDTO TheThanhVien)
        {
            DataProvider cn = new DataProvider();
            SqlParameter[] param = new SqlParameter[7];
            param[0] = new SqlParameter("@MaThe", TheThanhVien.MaThe);
            param[1] = new SqlParameter("@HoTen", TheThanhVien.HoTen);
            param[2] = new SqlParameter("@CMND", TheThanhVien.CMND);
            param[3] = new SqlParameter("@NgaySinh", TheThanhVien.NgaySinh);
            param[4] = new SqlParameter("@GioiTinh", TheThanhVien.GioiTinh);
            param[5] = new SqlParameter("@DienThoai", TheThanhVien.DienThoai);
            param[6] = new SqlParameter("@MaDoiTuong", TheThanhVien.DoiTuong);
            cn.SqlExcuteNonQuery("UpdateTheThanhVien", param);
        }

        public void Delete(string id)
        {
            DataProvider cn = new DataProvider();
            SqlParameter param = new SqlParameter("@MaThe", id);
            cn.SqlExcuteNonQuery("DeleteTheThanhVien", param);
        }
    }
}
